package main

import "fmt"

// 定义一个结构体类型 Base，它包含一个字段 id，方法 Id() 返回 id，方法 SetId() 修改 id。
// 结构体类型 Person 包含 Base，及 FirstName 和 LastName 字段。
// 结构体类型 Employee 包含一个 Person 和 salary 字段。

type Base struct {
	id int
}

func (b Base) Id() int {
	return b.id
}

func (b *Base) SetId(id int) {
	b.id = id
}

type Person struct {
	Base
	FirstName, LastName string
}

type Employee struct {
	Person
	salary float64 // 员工工资
}

func main() {
	emp := &Employee{Person{Base{1}, "Meimei", "Han"}, 100.86}

	fmt.Println("the employee's id is: ", emp.Id())
	emp.SetId(3)
	fmt.Println("Set employee's id to 3: ", emp)
}
